home *** CD-ROM | disk | FTP | other *** search
/ Mac Expert 1995 Winter / Mac Expert - Winter 95.iso / Les fichiers / P.I.M.s / PCalc 1.0 ƒ / PCalc Functions < prev    next >
Text File  |  1992-12-02  |  5KB  |  331 lines

  1. ••• PCalc 1.0 External Functions by James Thomson
  2.  
  3. This document contains the definitions of the functions that appear under the
  4. 'Functions' menu in PCalc.
  5.  
  6. Each function starts with the line 'def <functionName>' followed by any number
  7. of the commands below, each on a separate line, and is terminated by a line
  8. with a single 'end' on it. Note that if the name has a '/' followed by character
  9. at the end, this will be used as the command-key in the menu.
  10.  
  11. Also, the keyword 'separatorLine' adds a grey separator line to the menu and
  12. 'hierMenu <hierMenuName>' creates a submenu in which the functions that follow
  13. appear. A 'hierEnd' or another 'heirMenu <name>' finishes each submenu. 
  14.  
  15. The maximum number of functions is 512 at the moment in 32 submenus, any extra
  16. will be ignored. Do you really need any more than that?
  17.  
  18. If a function only makes sense in a certain mode, it is a good idea to prefix
  19. the rest of the definition with a 'dec', 'hex' or 'bin' so the calculator will
  20. automatically switch mode. For example 'set x 42' when in hex mode sets
  21. the display to the hex value $42, not to forty-two. If any errors occur (such
  22. as an overflow) when applying a function, the calculator will beep.
  23.  
  24. Look at the function definitions below for examples to make things clearer.
  25.  
  26. Please mail me any functions you write that you think would be useful to others
  27. and I will include them with the next version, credited to you.
  28.  
  29.  
  30. ••• Known Commands
  31.  
  32. x is the name of any register
  33. y is the name of any register or an actual value
  34.  
  35.     set x y : x = y
  36.     clr x : x = 0
  37.  
  38.     add x y : x = x + y
  39.     sub x y : x = x - y
  40.     mul x y : x = x * y
  41.     div x y : x = x / y
  42.     pwr x y : x = x to the power of y
  43.  
  44.     neg x : x = -x
  45.     inv x : x = 1/x
  46.     trn x : x = truncate x to integer
  47.     rnd x : x = round x to nearest integer
  48.  
  49.     fac x : x = factorial of x
  50.     exp x : x = e to the power of x
  51.     log x : x = log base 10 of x
  52.     ln  x : x = natural log of x
  53.  
  54.     sin x : x = sine x
  55.     cos x : x = cosine x
  56.     tan x : x = tangant x
  57.     asn x : x = inverse sine x
  58.     acs x : x = inverse cosine x
  59.     atn x : x = inverse tanget x
  60.  
  61.     + value : shortcut add that works on main register
  62.     - value : shortcut subtract that works on main register
  63.     * value : shortcut multiply that works on main register
  64.     / value : shortcut divide that works on main register
  65.  
  66.     = x y : sets x to 1 if x = y, to 0 otherwise
  67.     > x y : sets x to 1 if x > y, to 0 otherwise
  68.     < x y : sets x to 1 if x < y, to 0 otherwise
  69.     => x y : sets x to 1 if x => y, to 0 otherwise
  70.     <= x y : sets x to 1 if x <= y, to 0 otherwise
  71.  
  72.     dec : change mode to decimal
  73.     hex : change mode to hexadecimal
  74.     bin : change mode to binary
  75.  
  76.     deg : change angle measurement to degrees
  77.     rad : change angle measurement to radians
  78.  
  79. In binary and hex modes only :
  80.  
  81.     and x y : x = bitwise and of x and y
  82.     or  x y : x = bitwise or of x and y
  83.     xor x y : x = bitwise xor of x and y
  84.     not x y : x = bitwise not of x
  85.  
  86.  
  87. ••• Known Registers
  88.  
  89.     x : main register
  90.     m : memory
  91.     y : second memory
  92.  
  93.     r1, r2, ...rF : sixteen registers for storing intermediate results
  94.  
  95.  
  96. ••• Known Constants
  97.  
  98.     PI : value of π
  99.     
  100.  
  101. ••• Function Definitions
  102.  
  103. hierMenu Conversion
  104.  
  105. def Inches to Millimetres
  106. dec
  107. mul x 25.4
  108. end
  109.  
  110. def Millimetres to Inches
  111. dec
  112. div x 25.4
  113. end
  114.  
  115. def Miles to Kilometres
  116. dec
  117. mul x 1.61
  118. end
  119.  
  120. def Kilometres to Miles
  121. dec
  122. div x 1.61
  123. end
  124.  
  125. def Gallons to Litres
  126. dec
  127. mul x 3.78541
  128. end
  129.  
  130. def Litres to Gallons
  131. dec
  132. div x 3.78541
  133. end
  134.  
  135. def Pounds to Kilograms
  136. dec
  137. mul x 0.45359237
  138. end
  139.  
  140. def Kilograms to Pounds
  141. dec
  142. div x 0.45359237
  143. end
  144.  
  145. def Ounces to Grams
  146. dec
  147. mul x 28.3495
  148. end
  149.  
  150. def Grams to Ounces
  151. dec
  152. div x 28.3495
  153. end
  154.  
  155. def °F to °C
  156. dec
  157. sub x 32
  158. mul x 5
  159. div x 9
  160. end
  161.  
  162. def °C to °F
  163. dec
  164. mul x 9
  165. div x 5
  166. add x 32
  167. end
  168.  
  169. def Degrees to Radians
  170. dec
  171. div x 57.29577951308232
  172. end
  173.  
  174. def Radians to Degrees
  175. dec
  176. mul x 57.29577951308232
  177. end
  178.  
  179. def Megabytes to Bytes
  180. dec
  181. mul x 1048576
  182. end
  183.  
  184. def Bytes to Megabytes
  185. dec
  186. div x 1048576
  187. end
  188.  
  189. hierMenu Trigonometric
  190.  
  191. def Hyperbolic Sine
  192. dec
  193. set r1 x
  194. set r2 x
  195. neg r2
  196. exp r1
  197. exp r2
  198. sub r1 r2
  199. div r1 2
  200. set x r1
  201. end
  202.  
  203. def Hyperbolic Cosine
  204. dec
  205. set r1 x
  206. set r2 x
  207. neg r2
  208. exp r1
  209. exp r2
  210. add r1 r2
  211. div r1 2
  212. set x r1
  213. end
  214.  
  215. def Hyperbolic Tangent
  216. dec
  217. set r1 x
  218. set r2 x
  219. set r3 x
  220. set r4 x
  221. neg r2
  222. neg r4
  223. exp r1
  224. exp r2
  225. exp r3
  226. exp r4
  227. sub r1 r2
  228. add r3 r4
  229. div r1 r3
  230. set x r1
  231. end
  232.  
  233. def Inverse Hyp Sine
  234. dec
  235. set r1 x
  236. pwr x 2
  237. add x 1
  238. pwr x 0.5
  239. add x r1
  240. ln x
  241. end
  242.  
  243. def Inverse Hyp Cosine
  244. dec
  245. set r1 x
  246. pwr x 2
  247. sub x 1
  248. pwr x 0.5
  249. add x r1
  250. ln x
  251. end
  252.  
  253. def Inverse Hyp Tangent
  254. dec
  255. set r1 x
  256. set r2 x
  257. set r3 1
  258. sub r3 r2
  259. add r1 1
  260. div r1 r3
  261. ln r1
  262. div r1 2
  263. set x r1
  264. end
  265.  
  266. def Secant
  267. dec
  268. cos x
  269. inv x
  270. end
  271.  
  272. def Cosecant
  273. dec
  274. sin x
  275. inv x
  276. end
  277.  
  278. def Cotangent
  279. dec
  280. tan x
  281. inv x
  282. end
  283.  
  284. hierMenu Financial
  285.  
  286. def Add VAT at 17.5%
  287. dec
  288. mul x 1.175
  289. end
  290.  
  291. def Round to Nearest
  292. dec
  293. mul x 100
  294. add x 0.5
  295. rnd x
  296. div x 100
  297. end 
  298.  
  299. hierMenu Memory
  300.  
  301. def Clear Memory
  302. set m 0
  303. end
  304.  
  305. def Add Memory
  306. add x m
  307. end
  308.  
  309. def Subtract Memory
  310. sub x m
  311. end
  312.  
  313. def Multiply by Memory
  314. mul x m
  315. end
  316.  
  317. def Divide by Memory
  318. div x m
  319. end
  320.  
  321. def Raise to Memory
  322. pwr x m
  323. end
  324.  
  325.  
  326. ••• End Of Functions
  327.  
  328. By the way, you can remove all the comments in this file to free up some memory
  329. if you need it. Click at the right end of the black strip that says 'PCalc' on
  330. the calculator to display the ammount of free memory available and the memory
  331. used up by the functions. Enjoy!